package aceim.protocol.snuk182.xmpp.common.utils;
import org.jivesoftware.smack.XMPPException;
import aceim.api.dataentity.ActionFeature;
import aceim.api.dataentity.InputFormFeature;
import aceim.api.dataentity.ListFeature;
import aceim.api.dataentity.MarkerFeature;
import aceim.api.dataentity.ProtocolServiceFeature;
import aceim.api.dataentity.ProtocolServiceFeatureTarget;
import aceim.api.dataentity.tkv.ListTKV;
import aceim.api.dataentity.tkv.StringTKV;
import aceim.api.dataentity.tkv.StringTKV.ContentType;
import aceim.api.dataentity.tkv.TKV;
import aceim.api.service.ApiConstants;
import aceim.api.utils.Utils;
import aceim.protocol.snuk182.xmpp.common.R;
import aceim.protocol.snuk182.xmpp.common.XMPPApiConstants;
import android.content.Context;
public final class ResourceUtils {
public static final String KEY_JID = "key_jid";
public static final String KEY_PASSWORD = "key_password";
public static final String KEY_SERVER_HOST = "key_server_host";
public static final String KEY_SERVER_PORT = "key_server_port";
public static final String KEY_PING_TIMEOUT = "key_ping_timeout";
public static final String KEY_PROXY_TYPE = "key_proxy_type";
public static final String KEY_PROXY_HOST = "key_proxy_host";
public static final String KEY_PROXY_PORT = "key_proxy_port";
public static final String KEY_PROXY_USERNAME= "key_proxy_username";
public static final String KEY_PROXY_PASSWORD = "key_proxy_password";
public static final String KEY_SECURE_CONNECTION = "key_secure_connection";
public static final String BUDDY_PUBLIC_KEY_PREFIX = "BuddyPublicKey_";
private static ProtocolServiceFeature[] FEATURES = null;
private static InputFormFeature sGroupChatFeature = null;
public static final ProtocolServiceFeature[] getFeatures(Context context) {
if (FEATURES == null) {
FEATURES = new ProtocolServiceFeature[] {
new ListFeature(
ApiConstants.FEATURE_STATUS,
context.getString(R.string.status),
0,
true,
true,
true,
Utils.fillResources(context.getResources(), R.array.xmpp_status_strings),
Utils.fillResources(context.getResources(), R.array.xmpp_status_icons),
false,
new ProtocolServiceFeatureTarget[]{ProtocolServiceFeatureTarget.ACCOUNT}),
new InputFormFeature(
XMPPApiConstants.FEATURE_ADD_BUDDY,
context.getString(R.string.add_buddy),
android.R.drawable.ic_menu_add,
false,
false,
getAddBuddyFormTKVs(context),
new ProtocolServiceFeatureTarget[]{ProtocolServiceFeatureTarget.ACCOUNT}),
new InputFormFeature(XMPPApiConstants.FEATURE_AUTHORIZATION,
context.getString(R.string.ask_authorization),
android.R.drawable.ic_dialog_alert,
true,
false,
getAuthorizationFields(context),
new ProtocolServiceFeatureTarget[]{ProtocolServiceFeatureTarget.BUDDY}),
new MarkerFeature(ApiConstants.FEATURE_FILE_TRANSFER,
"File Transfer",
android.R.drawable.ic_menu_save,
false,
false,
new ProtocolServiceFeatureTarget[]{ProtocolServiceFeatureTarget.BUDDY}),
new MarkerFeature(ApiConstants.FEATURE_BUDDY_MANAGEMENT,
"Buddy management",
android.R.drawable.ic_menu_info_details,
false,
false,
new ProtocolServiceFeatureTarget[]{ProtocolServiceFeatureTarget.BUDDY}),
new MarkerFeature(ApiConstants.FEATURE_GROUP_MANAGEMENT,
"Group management",
android.R.drawable.ic_menu_info_details,
false,
false,
new ProtocolServiceFeatureTarget[]{ProtocolServiceFeatureTarget.GROUP}),
new MarkerFeature(ApiConstants.FEATURE_ACCOUNT_MANAGEMENT,
"Account info management",
android.R.drawable.ic_menu_info_details,
false,
false,
new ProtocolServiceFeatureTarget[]{ProtocolServiceFeatureTarget.ACCOUNT}),
new ActionFeature(XMPPApiConstants.FEATURE_GROUPCHATS,
context.getString(R.string.groupchats),
R.drawable.ic_menu_allfriends,
false,
false,
new ProtocolServiceFeatureTarget[]{ProtocolServiceFeatureTarget.ACCOUNT}),
getAddGroupchatFeature(context),
new ActionFeature(XMPPApiConstants.FEATURE_CONFIGURE_CHAT_ROOM_ACTION,
context.getString(R.string.room_configuration),
android.R.drawable.ic_menu_edit,
false,
false,
new ProtocolServiceFeatureTarget[]{ProtocolServiceFeatureTarget.BUDDY}),
new ActionFeature(XMPPApiConstants.FEATURE_DESTROY_CHAT_ROOM,
context.getString(R.string.destroy_room),
android.R.drawable.ic_menu_delete,
false,
false,
new ProtocolServiceFeatureTarget[]{ProtocolServiceFeatureTarget.BUDDY})
};
}
return FEATURES;
}
public static InputFormFeature getAddGroupchatFeature(Context context) {
if (sGroupChatFeature == null) {
sGroupChatFeature = new InputFormFeature(XMPPApiConstants.FEATURE_ADD_GROUPCHAT,
context.getString(R.string.add_connect_groupchat),
android.R.drawable.ic_menu_add,
false,
false,
getAddGroupchatFormTKVs(context),
new ProtocolServiceFeatureTarget[]{ProtocolServiceFeatureTarget.ACCOUNT});
}
return sGroupChatFeature;
}
private static TKV[] getAddGroupchatFormTKVs(Context context) {
return new TKV[]{
new StringTKV(ContentType.STRING, context.getString(R.string.host), true, XMPPApiConstants.DEFAULT_HOST),
new StringTKV(ContentType.STRING, context.getString(R.string.chat_room_id), true, null),
new ListTKV(new String[]{context.getString(R.string.join_existing_room), context.getString(R.string.create_new_chat)}, context.getString(R.string.chat_action), true, null),
new StringTKV(ContentType.STRING, context.getString(R.string.nickname), false, null),
new StringTKV(ContentType.PASSWORD, context.getString(R.string.password), false, null)
};
}
private static final TKV[] getAuthorizationFields(Context context) {
return new TKV[]{
new StringTKV(ContentType.STRING, context.getString(R.string.message), true, context.getString(R.string.ask_authorization_message_default))
};
}
private static final TKV[] getAddBuddyFormTKVs(Context context) {
return new TKV[]{
new StringTKV(ContentType.STRING, context.getString(R.string.jid), false, null),
new StringTKV(ContentType.STRING, context.getString(R.string.nickname), false, null)
};
}
public static String xmppExceptionToString(XMPPException e) {
return e.getLocalizedMessage(); //(e.getXMPPError() != null ? e.getXMPPError().getMessage() + "(" + e.getXMPPError().getCode() + ")" : "") + (e.getStreamError() != null ? e.getStreamError().getText() + "(" + e.getStreamError().getCode() + ")" : "");
}
}